/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.tri.gui.ListadosWorkers;

import java.util.Date;
import javax.swing.table.AbstractTableModel;
import org.tri.entity.AbstractVenta;
import org.tri.entity.Establecimiento;
import org.tri.entity.Productor;
import org.tri.gui.worker.TableFillListener;
import org.tri.gui.worker.TableFillWorker;
import org.tri.gui.worker.retrievers.BusquedaDataRetriever;
import org.tri.model.EntityTableModel;
import org.tri.persistence.search.BusquedaVentaHistorica;

/**
 *
 * @author giaco
 */
public class VentasHistoricasListadosWorker extends VentasListadosWorker {

    public VentasHistoricasListadosWorker() {
    }//end constructor VentasListadosWorker

    @Override
    public AbstractTableModel execute( Establecimiento establecimiento,
                                       Date fechaInicio, Date fechaFin,
                                       TableFillListener listener ) {
        //inicializo la busqueda
        BusquedaVentaHistorica ventaHistorica = new BusquedaVentaHistorica();

        //agrego los criterios de busqueda
        ventaHistorica.porFechaEnRango( fechaInicio, fechaFin );
        ventaHistorica.porEstablecimiento( establecimiento );

        //agrego las busquedas al data retriever
        BusquedaDataRetriever busqueda = new BusquedaDataRetriever( ventaHistorica );

        //realizo la busqueda en un Thread aparte
        TableFillWorker<AbstractVenta> worker = new TableFillWorker<AbstractVenta>(
                (EntityTableModel)modelo, busqueda );

        worker.addTableFillListener( listener );

        worker.execute();

        return modelo;

    }//end metodo execute

    @Override
    public AbstractTableModel execute( Productor productor, Date fechaInicio,
                                       Date fechaFin,
                                       TableFillListener listener ) {
        //inicializo la busqueda
        BusquedaVentaHistorica ventaHistorica = new BusquedaVentaHistorica();

        //agrego los criterios de busqueda
        ventaHistorica.porFechaEnRango( fechaInicio, fechaFin );
        ventaHistorica.porProductor( productor );

        //agrego las busquedas al data retriever
        BusquedaDataRetriever busqueda = new BusquedaDataRetriever( ventaHistorica );

        //realizo la busqueda en un Thread aparte
        TableFillWorker<AbstractVenta> worker = new TableFillWorker<AbstractVenta>( (EntityTableModel)modelo, busqueda );

        worker.addTableFillListener( listener );

        worker.execute();

        return modelo;

    }//end metodo execute

    @Override
    public String toString() {
        return "Ventas Historicas";
    }

}
